package cn.lg.soar.system.api.service;

import cn.lg.soar.system.api.model.RefreshTokenDTO;
import eu.bitwalker.useragentutils.DeviceType;

import java.util.Arrays;
import java.util.List;

/**
 * @author luguoxiang
 * @date 2022/4/6
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface IRefreshTokenApi {

    /**
     * 通过id验证token，验证成功返回token实体
     * @param id
     * @return
     */
    RefreshTokenDTO getById(String id);

    /**
     * 验证token，验证成功返回token实体
     * @param refreshToken
     * @return
     */
    RefreshTokenDTO verify(String refreshToken);

    /**
     * 根据用户id获取 tokenid
     * @param deviceType 设备类型，可为空
     * @param userIds
     * @return
     */
    List<String> idsByUserId(List<Long> userIds, DeviceType deviceType);

    default List<String> idsByUserId(List<Long> userIds) {
        return idsByUserId(userIds, null);
    }

    default List<String> idsByUserId(Long...userIds) {
        return idsByUserId(Arrays.asList(userIds));
    }

    /**
     * 根据用户id获取活动的 tokenid
     * @param userIds
     * @param deviceType
     * @return
     */
    List<String> idsByUserIdAndActive(List<Long> userIds, DeviceType deviceType);

    default List<String> idsByUserIdAndActive(List<Long> userIds) {
        return idsByUserIdAndActive(userIds, null);
    }

    default List<String> idsByUserIdAndActive(Long...userIds) {
        return idsByUserIdAndActive(Arrays.asList(userIds));
    }

}
